#include <stdio.h>
#include <stdlib.h>

/*
文件写入
fgetc
fgets   // 读一行 
fsacnf

*/

typedef struct 
{
    // 登录用
    char user_name[128];   // 账号
    char password[128];    // 密码
    // 学生信息
    char name[128];        // 学生姓名
    char sex[5];           // 学生性别
    int id;                 // 学生id
    int age;                // 学生年龄
    int soc;                // 学生成绩
}stu_user;

int main(int argc, char const *argv[])
{
    // 打开文件
    FILE * fp = fopen("hello.txt" , "r+");
    if (NULL == fp)
    {
        printf("文件打开失败\n");
        exit(-1);
    }

    // 从文件中读取字符
    char c = 0;
    while ('\n' != (c = fgetc(fp)))
    {
        fputc( c , stdout );
    }
    fputc( c , stdout );

    // 从文件中读取字符串
    char buf[128];
    fgets( buf , sizeof(buf) ,  fp );
    fputs(buf , stdout);

    // 从文件中读取格式化字符
    stu_user s1[20];
    for (size_t i = 0; i < 5; i++)
    {
        fscanf( fp , "%s\t%s\t%s\t%s\t%d\t%d\t%d\n" , \
            s1[i].user_name , s1[i].password , \
            s1[i].name , s1[i].sex , &s1[i].id , \
            &s1[i].age  , &s1[i].soc
        );
    }

    // 打印数据
    for (size_t i = 0; i < 5; i++)
    {
        printf( "%s\t%s\t%s\t%s\t%d\t%d\t%d\n" , \
            s1[i].user_name , s1[i].password , \
            s1[i].name , s1[i].sex , s1[i].id , \
            s1[i].age  , s1[i].soc
        );
    }
    

    fclose(fp);
    return 0;
}

